Model-driven software development is a process of generating software applications from models. Models are an abstraction of the desired application, often represented graphically and in a manner that is comprehensible by an end-user of the software system.
Normally, models are developed and/or reviewed by persons other than software developers, and developers either create code from scratch, or a code generation process is used to produce source code from the models. The resulting source code may be compiled into an executable program and deployed.
This approach has drawbacks in that with each change to the application, the models must be updated and the source code regenerated, rebuilt, and redeployed before modelers can see the results of their changes and perform appropriate tests. Even if this process is fully automated using code generation, it may result in a high level of developer involvement, as well as system downtime when each change is applied to the test system.
An alternative is to dispense with the code generation and compile steps and instead support direct, interpreted execution of the models. Unfortunately, this flexibility comes at the cost of the high level of performance only achievable with compiled code.